#ifndef FIRSTWINDOW_H
#define FIRSTWINDOW_H

#include <QJsonDocument>
#include <QJsonObject>
#include <QLineEdit>
#include <QList>
#include <QNetworkAccessManager>
#include <QNetworkReply>

#include <QLineEdit>
#include <QMainWindow>
#include "calendardialog.h"
#include "choosecitydialog.h"

namespace Ui {
class FirstWindow;
}

class FirstWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit FirstWindow(QWidget *parent = nullptr);
    void createflightcheckwindow();
    ~FirstWindow();

private slots:
    void on_toCheckbutton_clicked();
    void on_toLogbotton_clicked();
    void on_toEnrollbotton_clicked();
    void on_pushButton_clicked();
    void onFlightSearchRequestFinished();
    void updateDateDisplay1(const QDate &date); // 更新 QLabel 和 QLineEdit
    void updateDateDisplay2(const QDate &date);

    // 更新 QLineEdit 的城市名
    void updateLineEditWithCity(const QString &cityName, QLineEdit *lineEdit);

    void on_toCheckbutton_2_clicked();

signals:
    void triggerFunction(); // 自定义信号，触发另一个页面的函数

private:
    Ui::FirstWindow *ui;
    ChooseCityDialog *cityDialog;
    CalendarDialog *dateDialog;                                 // 对话框
    bool eventFilter(QObject *watched, QEvent *event) override; // 声明 eventFilter

    // 连接 QLineEdit 点击事件的信号到相应的处理函数
    void connectLineEditSignals(QLineEdit *lineEdit);

    // 处理 QLineEdit 点击事件
    void handleLineEditClick(QLineEdit *lineEdit);

    QNetworkAccessManager *manager; // 网络访问管理器

    void handleDateEditClick(QLineEdit *lineEdit);

    FlightsCheckWindow *flightsCheckWindow = nullptr; // 延迟创建的指针
};

#endif // FIRSTWINDOW_H
